// 单例 Singleton
// 立即执行函数是创建闭包的手段之一
let CreateSingLeton=(function(){
    console.log('创建单例');
    // 多了一层作用域 作用域链
    let instance;// 实例
    return function(name){ // constructor
        if(instance){ // 之前实例化过
            return instance;
        }
        this.name=name;
        return instance=this;
        // instance=this;
        // return this;
    }
})()
CreateSingLeton.prototype.getName=function(){
    console.log(this.name);
}
// 惰性？
let Singleton = new CreateSingLeton('菠萝头');
let dalao = new CreateSingLeton('大佬');
// console.log(Singleton.name);
console.log(Singleton===dalao);//true
console.log(Singleton.getName());// 菠萝头
console.log(dalao.getName());// 菠萝头